package com.monna.util;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.monna.datebase.DBOpenHelper;
import com.monna.entity.User;

/**
 * 处理用户基本操作：登陆、注册
 * @author 廖梦青
 */
public class UserUtil {

    private DBOpenHelper dbOpenHelper;
    private SQLiteDatabase database;

    /**
     * 初始化数据库
     * @param context
     */
    public UserUtil(Context context){
        dbOpenHelper = new DBOpenHelper(context);
        database = dbOpenHelper.getReadableDatabase();
    }

    /**
     * 用户登录。数据库中存在账号密码相匹配时，登陆成功
     * @param account
     * @param password
     * @return
     */
    public boolean userLogin(String account, String password){
        String sql = "select * from user where account=? and password=?";
        Cursor cursor = database.rawQuery(sql, new String[]{account, password});
        /**
         * 指向查询结果的第一个位置，用于确定查询结果是否为空
         */
        if (cursor.moveToFirst() == true){
            cursor.close();
            return true;
        }
        return false;
    }

    /**
     * 判断用户是否已存在，存在，返回true，否，则返回false
     * @param account
     * @return
     */
    private boolean isUser(String account){
        String sql = "select * from user where account=?";
        Cursor cursor = database.rawQuery(sql, new String[]{account});
        /**
         * 指向查询结果的第一个位置，用于确定查询结果是否为空
         */
        if (cursor.moveToFirst() == true){
            cursor.close();
            return true;
        }
        return false;
    }

    /**
     * 新建用户分数记录
     * @param account
     */
    private void userScore(String account){
        String sql = "insert into score(account, height_score) values( ?,0)";
        database.execSQL(sql, new String[]{account});
    }

    /**
     * 用户注册。用户不存在时，新建用户及其分数记录
     * @param user
     * @return
     */
    public boolean userRegister(User user){
        System.out.println("用户存在为真，不存在为假：" + isUser(user.getAccount()));
        if (!isUser(user.getAccount())){
            /**
             * 用户不存在
             */
            String sql = "insert into user(account,password,name) values(?,?,?)";
            String obj[] = {user.getAccount(), user.getPassword(), user.getName()};
            database.execSQL(sql, obj);
            System.out.println("新建用户成功！");
            userScore(user.getAccount());
            System.out.println("新建用户分数表成功！");
            return true;
        }
        return false;
    }

    /**
     * 根据用户账号查询用户昵称
     * @param account
     * @return
     */
    public String seleUserName(String account){
        String userName = null;
        String sql = "select name from user where account = ?";
        Cursor cursor = database.rawQuery(sql, new String[]{account});
        /**
         * 指向查询结果的第一个位置，用于确定查询结果是否为空
         */
        if (cursor.moveToFirst() == true){
            userName = cursor.getString(cursor.getColumnIndexOrThrow("name"));
            cursor.close();
        }
        return userName;
    }
}
